home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Info-Mac 4
/
Info_Mac IV CD-ROM (Pacific HiTech Inc.)(August 1994).iso
/
Development
/
General
/
DR1.#1 PowerPlant ƒ
/
LWindow.h
< prev
next >
Wrap
Text File
|
1994-02-10
|
5KB
|
176 lines
// ===========================================================================
// LWindow.h ©1993 Metrowerks Inc. All rights reserved.
// ===========================================================================
#pragma once
#include "LView.h"
#include "LCommander.h"
#include "LModelObject.h"
typedef struct SWINDResource { // Format of a 'WIND' Resource
Rect bounds;
Int16 procID;
Int16 visible;
Int16 hasGoAway;
Int32 refCon;
Str255 title; // Not really, but OK as long as we
// only use this for typecasting
// WIND resource handles
} SWINDResource, *SWINDResourceP, **SWINDResourceH;
enum {
windAttr_CloseBox = 0x8000,
windAttr_TitleBar = 0x4000,
windAttr_Floating = 0x2000,
windAttr_Modal = 0x1000,
windAttr_Resizable = 0x0800,
windAttr_SizeBox = 0x0400,
windAttr_Zoomable = 0x0200,
windAttr_Regular = 0x0100,
windAttr_ShowNew = 0x0080,
windAttr_Enabled = 0x0040,
windAttr_Targetable = 0x0020,
windAttr_GetSelectClick = 0x0010,
windAttr_HideOnSuspend = 0x0008,
windAttr_DelaySelect = 0x0004,
windAttr_EraseOnUpdate = 0x0002
};
typedef Uint16 EWindAttr;
const Int16 PP_Window_Kind = 20000;
const Int16 click_OutsideModal = 42;
#define window_InFront ((WindowPtr) -1)
#define window_InBack ((WindowPtr) 0)
class LWindow : public LView, public LCommander, public LModelObject {
public:
LWindow();
virtual ~LWindow();
static LWindow* CreateWindow(ResIDT inWindowID,
LCommander *inSuperCommander);
static LWindow* CreateWindowStream(LStream *inStream);
LWindow(LStream *inStream);
void MakeMacWindow(short inWINDid);
static LWindow* FetchWindowObject(WindowPtr inWindowP);
virtual GrafPtr GetMacPort() const;
Boolean HasAttribute(EWindAttr inAttribute) const;
void GetMinMaxSize(Rect &outRect) const;
void SetMinMaxSize(const Rect &inRect);
void GetStandardSize(SDimension16 &outStdSize);
void SetStandardSize(SDimension16 inStdSize);
virtual StringPtr GetDescriptor(Str255 outDescriptor) const;
virtual void SetDescriptor(ConstStr255Param inDescriptor);
virtual void HandleClick(const EventRecord& inMacEvent, Int16 inPart);
virtual void ClickInContent(const EventRecord& inMacEvent);
virtual void UpdatePort();
virtual void EstablishPort();
virtual void InvalPortRect(const Rect *inRect);
virtual void InvalPortRgn(RgnHandle inRgnH);
virtual void ValidPortRect(const Rect *inRect);
virtual void ValidPortRgn(RgnHandle inRgnH);
void Select();
virtual void Show();
virtual void Activate();
virtual void Deactivate();
virtual void Enable();
virtual void Suspend();
virtual void Resume();
virtual void GlobalToPortPoint(Point &ioPoint) const;
virtual void PortToGlobalPoint(Point &ioPoint) const;
virtual Boolean ObeyCommand(CommandT inCommand, void *ioParam);
virtual void FindCommandStatus(CommandT inCommand,
Boolean &outEnabled, Boolean &outUsesMark,
Char16 &outMark);
// •• Performing Actions
// • Changing Position
virtual void ClickInDrag(const EventRecord& inMacEvent);
void SendAESetPosition(Point inPosition, Boolean inExecuteAE);
void DoSetPosition(Point inPosition);
// • Changing Size and/or Position
virtual void ClickInGrow(const EventRecord& inMacEvent);
virtual void SendAESetBounds(Rect *inBounds, Boolean inExecuteAE);
void DoSetBounds(const Rect &inBounds);
// • Zooming
virtual void ClickInZoom(const EventRecord& inMacEvent,
short inZoomDirection);
virtual Boolean CalcStandardBounds(Rect &outStdBounds) const;
virtual void CalcStandardBoundsForScreen(const Rect &inScreenBounds,
Rect &outStdBounds) const;
virtual void SendAESetZoom();
virtual void DoSetZoom(Boolean inZoomToStdState);
// • Closing
virtual void ClickInGoAway(const EventRecord& inMacEvent);
virtual void SendAEClose();
virtual OSErr DoAEClose();
// •• AppleEvent Object Model Support ••
DescType GetModelKind() const;
virtual void MakeSelfSpecifier(AEDesc& inSuperSpecifier,
AEDesc& outSelfSpecifier) const;
virtual LModelProperty* GetModelProperty(DescType inProperty);
virtual void GetAEProperty(DescType inProperty,
const AEDesc& inRequestedType,
AEDesc& outPropertyDesc) const;
virtual void SetAEProperty(DescType inProperty,
const AEDesc& inValue,
AEDesc& outAEReply);
void GetAEWindowAttribute(Uint16 inAttribute,
AEDesc& outPropertyDesc) const;
virtual void HandleAppleEvent(const AppleEvent& inAppleEvent,
AppleEvent& outARReply,
long inAENumber);
static WindowPtr FindNthWindow(Int16 inN);
static Int16 FindWindowIndex(WindowPtr inWindowP);
protected:
virtual void DrawSelf();
void DrawSizeBox();
virtual void ShowSelf();
virtual void HideSelf();
virtual void ActivateSelf();
virtual void DeactivateSelf();
private:
WindowPtr mMacWindowP;
Rect mMinMaxSize;
SDimension16 mStandardSize;
Rect mUserBounds;
Uint16 mAttributes;
Boolean mMoveOnlyUserZoom;
};